查看原文
其他

机器学习笔记——机器学习实战之准备(一)

凌岸 Python爱好者社区 2019-04-07

作者:凌岸
从零开始学习数据分析,Python爱好者社区专栏作者
终身学习者@数据分析&数据挖掘
知乎专栏:https://zhuanlan.zhihu.com/linga


目录


  • 机器学习简单概述

  • 机器学习的主要任务

  • 学习机器学习的原因

  • python语言优势


1.1  何谓机器学习


简单的说,机器学习就是把无序的数据变换成有用的信息。


机器学习的主要任务就分类。


机器学习关键术语:

分类;训练集;样本集;训练样本;目标样本;知识表示


训练集是用于机器学习算法的数据样本集合

1.3 机器学习的主要任务


机器学习的主要如何解决分类问题,主要任务是将实例数据划分到合适的分类中。
机器学习的另一项任务就是回归。(回归的例子之一就是   数据拟合曲线)分类和回归属于监督学习。


监督学习:因为这类算法必须知道预测什么,即目标变量的分类信息。


无监督学习:此时数据没有类别信息,也不会给定目标值。无监督学习可以减少数据特征的维度,使我们用二维图或三维图更加直观地展示数据信息。

聚类:数据集合分成类似的对象组成多个类的过程。


密度估计:寻找描述数据统计值的过程。

1.4 如何选择合适的算法


先考虑两个问题:


  • 使用机器学习算法的目的,想要完成何种任务?

  • 需要分析或收集的数据是什么?(了解数据的以下特征:特征值是离散变量还是连续型变量,特征量是否存在缺失的值)


我们只能一定程度上缩小算法的选择范围,一般不存在最好的算法或给出最好结果的算法,同时还要尝试不同算法的执行效果。

发现最好的算法的关键环节是反复试错的过程。

1.5 开发及其学习应用程序的步骤


  1. 收集数据。我们有很多办法收集数据,如爬虫,设备发送的信息。

  2. 准备输入数据。确保数据的格式符合要求。本书采用python的List

  3. 分析输入数据。手工打开文本编辑器,看数据是否为空。浏览数据,分析是否可以识别模式。确保数据集中没有垃圾数据。

  4. 训练算法。将前两步得到的格式化的数据输入到算法,从中抽取知识和信息。得到的知识需要存储为计算机可以处理的格式。

  5. 测试算法。将实际使用第4步得到的算法。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用到其他的评测手段来检验算法的成功率。

  6. 使用算法。将机器学习算法转换为应用程序,执行实际任务。


1.6 python语言的优势


有以下几个原因:(1)python的语法清晰;(2)易于操作的纯文本文件;(3)使用广泛,存在大量的开发文档

1.7 NumPy函数基础


下面给出一个数组和矩阵的例子:

In [1]: import numpy as np In [2]: x=np.random.rand(4,4) In [3]: x Out[3]: array([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ], [ 0.14394297, 0.04331558, 0.17968244, 0.55428581], [ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608], [ 0.69421236, 0.77925693, 0.64956842, 0.13911624]])

上述命令构造了一个4*4的随机数组。

In [6]: np.mat(x) Out[6]: matrix([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ], [ 0.14394297, 0.04331558, 0.17968244, 0.55428581], [ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608], [ 0.69421236, 0.77925693, 0.64956842, 0.13911624]]) In [7]: randMat=np.mat(x)

调用mat()函数将数组转行为矩阵。

In [8]: randMat.I Out[8]: matrix([[ 5.20712532, -4.48860333, 3.32227592, -2.99571552], [-5.6330336 , 4.87766411, -6.17839321, 5.88601676], [ 1.49156708, -1.72882662, 4.23683893, -2.56636519], [-1.3955605 , 3.14903216, -1.75339714, 1.14992431]]) In [9]: invRandMat=randMat.I

.I 操作符实现了矩阵的求逆运算。

In [10]: randMat*invRandMat Out[10]: matrix([[ 1.00000000e+00, -4.44089210e-16, 4.44089210e-16, -2.22044605e-16], [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 1.00000000e+00]]) In [11]: myEye=randMat*invRandMat

执行了矩阵乘法,得到矩阵与其逆矩阵相乘的结果。

In [13]: myEye-np.eye(4) Out[13]: matrix([[ 0.00000000e+00, -4.44089210e-16, 4.44089210e-16, -2.22044605e-16], [ 0.00000000e+00, -1.11022302e-16, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, -4.44089210e-16, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 4.44089210e-16]])

函数eye(4)创建了4*4的单位矩阵

1.8 本章小结


学习机器学习算法,必须了解数据实例,每个数据实例由多个特征值组成。分类是基本的机器学习任务,它分析未分类数据,以确定如何将其放入已知群组中。为了构建和训练分类器,必须首先输入大量已知分类的数据,我们将这些数据称之为训练样本集。

声明:

本节笔记来自,《机器学习实战》,作者:  
Peter Harrington ,出版社: 人民邮电出版社
原作名: Machine Learning in Action,译者: 曲亚东 / 李锐 / 王斌 / 李鹏

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:

关注后在公众号内回复“课程”即可获取:

小编的Python入门免费视频课程!!!

【最新免费微课】小编的Python快速上手matplotlib可视化库!!!

崔老师爬虫实战案例免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存